8653. Прибавить вычесть и умножить

 

Пусть x – переменная, изначально равная 0. Промоделируйте выполнение следующих операций над ней:

·      add a: прибавить значение a к x;

·      subtract a: вычесть значение a из x;

·      multiply a: умножить x на a;

 

Вход. Каждая строка содержит операцию и значение. Промоделируйте все операции. Значение переменной x при выполнении каждой операции не превышает по модулю 109.

 

Выход. Выведите результирующее значение переменной x.

 

Пример входа 1

Пример выхода 1

add 2

subtract 5

subtract 1

multiply -3

12

 

 

Пример входа 2

Пример выхода 2

subtract 5

multiply -5

add 5

30

 

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

Присвоим переменной x значение 0. Последовательно читаем входные строки: тип операции s и значение a. В зависимости от операции изменяем значение переменной x.

 

Реализация алгоритма

Название операции считываем в строку s.

 

char s[100];

 

Присвоим переменной x значение 0.

 

x = 0;

 

Последовательно читаем строки: тип операции s и значение a. В зависимости от первой буквы строки s определяем тип команды и выполняем соответствующее действие над переменной x.

 

while (scanf("%s %lld\n", s, &a) == 2)

{

  if (s[0] == 'a') x += a; else

  if (s[0] == 'm') x *= a; else

    x -= a;

}

 

Выводим ответ – результирующее значение переменной x.

 

printf("%lld\n", x);

 

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int x = 0;

    while(con.hasNext())

    {

      String s = con.next();

      int a = con.nextInt();

      if (s.charAt(0) == 'a') x += a; else

      if (s.charAt(0) == 'm') x *= a; else

        x -= a;

    }

    System.out.print(x);

    con.close();

  }

}  

 

Java реализация – OOP

 

import java.util.*;

 

class Number

{

  private int x;

  Number(int x)

  {

    this.x = x;

  }

 

  int GetNumber()

  {

    return x;

  }

 

  void Add(int a)

  {

    x += a;

  }

 

  void Subtract(int a)

  {

    x -= a;

  } 

 

  void Multiply(int a)

  {

    x *= a;

  } 

}

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    Number x = new Number(0);

    while(con.hasNext())

    {

      String s = con.next();

      int a = con.nextInt();

      if (s.charAt(0) == 'a') x.Add(a); else

      if (s.charAt(0) == 'm') x.Multiply(a); else

        x.Subtract(a);

    }

    System.out.print(x.GetNumber());

    con.close();

  }

}  

 

Python реализация

 

import sys

res = 0

for line in sys.stdin:

  s, x = line.split()

  if(s == "multiply"):

    res = res * int(x)

  elif(s == "add"):

    res = res + int(x)

  else:

    res = res - int(x)

print(res)